/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.model;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class EstruturaModel {

    private int codigo;
    private ClienteModel clienteModel;
    private String nomeComputador;
    private char tipoComputador;
    private String hostIP;
    private char tipoAcessoRemoto;
    private String usuarioAcessoRemoto;
    private String senhaAcessoRemoto;
    private String tipoBancoDados;
    private String nomeBancoDados;
    private String portaBancoDados;
    private ProdutoModel produtoModel;
    private String versaoBanco;
    private char ativo;

    private String hostERP;
    private String nomeBancoERP;
    private String portaERP;
    private String usuarioERP;
    private String senhaERP;

    private String hostFrenteLoja;
    private String nomeBancoFrenteLojaSRV;
    private String nomeBancoFrenteLojaECF;
    private String portaFrenteLoja;
    private String usuarioFrenteLoja;
    private String senhaFrenteLoja;
    private String nomeTela;

    public String getNomeTela() {
        return nomeTela;
    }

    public void setNomeTela(String nomeTela) {
        this.nomeTela = nomeTela;
    }

    public String getHostFrenteLoja() {
        return hostFrenteLoja;
    }

    public void setHostFrenteLoja(String hostFrenteLoja) {
        this.hostFrenteLoja = hostFrenteLoja;
    }

    public String getNomeBancoFrenteLojaSRV() {
        return nomeBancoFrenteLojaSRV;
    }

    public void setNomeBancoFrenteLojaSRV(String nomeBancoFrenteLojaSRV) {
        this.nomeBancoFrenteLojaSRV = nomeBancoFrenteLojaSRV;
    }

    public String getNomeBancoFrenteLojaECF() {
        return nomeBancoFrenteLojaECF;
    }

    public void setNomeBancoFrenteLojaECF(String nomeBancoFrenteLojaECF) {
        this.nomeBancoFrenteLojaECF = nomeBancoFrenteLojaECF;
    }

    public String getPortaFrenteLoja() {
        return portaFrenteLoja;
    }

    public void setPortaFrenteLoja(String portaFrenteLoja) {
        this.portaFrenteLoja = portaFrenteLoja;
    }

    public String getUsuarioFrenteLoja() {
        return usuarioFrenteLoja;
    }

    public void setUsuarioFrenteLoja(String usuarioFrenteLoja) {
        this.usuarioFrenteLoja = usuarioFrenteLoja;
    }

    public String getSenhaFrenteLoja() {
        return senhaFrenteLoja;
    }

    public void setSenhaFrenteLoja(String senhaFrenteLoja) {
        this.senhaFrenteLoja = senhaFrenteLoja;
    }

    public String getPortaBancoDados() {
        return portaBancoDados;
    }

    public void setPortaBancoDados(String portaBancoDados) {
        this.portaBancoDados = portaBancoDados;
    }

    public String getHostERP() {
        return hostERP;
    }

    public void setHostERP(String hostERP) {
        this.hostERP = hostERP;
    }

    public String getNomeBancoERP() {
        return nomeBancoERP;
    }

    public void setNomeBancoERP(String nomeBancoERP) {
        this.nomeBancoERP = nomeBancoERP;
    }

    public String getPortaERP() {
        return portaERP;
    }

    public void setPortaERP(String portaERP) {
        this.portaERP = portaERP;
    }

    public String getSenhaERP() {
        return senhaERP;
    }

    public void setSenhaERP(String senhaERP) {
        this.senhaERP = senhaERP;
    }

    public String getUsuarioERP() {
        return usuarioERP;
    }

    public void setUsuarioERP(String usuarioERP) {
        this.usuarioERP = usuarioERP;
    }

    public String getSenha() {
        return senhaERP;
    }

    public void setSenha(String senha) {
        this.senhaERP = senha;
    }

    public String getVersaoBanco() {
        return versaoBanco;
    }

    public void setVersaoBanco(String versaoBanco) {
        this.versaoBanco = versaoBanco;
    }

    public char getAtivo() {
        return ativo;
    }

    public void setAtivo(char ativo) {
        this.ativo = ativo;
    }

    public ClienteModel getClienteModel() {
        if (clienteModel == null) {
            clienteModel = new ClienteModel();
        }
        return clienteModel;
    }

    public void setClienteModel(ClienteModel clienteModel) {
        this.clienteModel = clienteModel;
    }

    public String getNomeComputador() {
        return nomeComputador;
    }

    public void setNomeComputador(String nomeComputador) {
        this.nomeComputador = nomeComputador;
    }

    public char getTipoComputador() {
        return tipoComputador;
    }

    public void setTipoComputador(char tipoComputador) {
        this.tipoComputador = tipoComputador;
    }

    public String getHostIP() {
        return hostIP;
    }

    public void setHostIP(String hostIP) {
        this.hostIP = hostIP;
    }

    public char getTipoAcessoRemoto() {
        return tipoAcessoRemoto;
    }

    public void setTipoAcessoRemoto(char tipoAcessoRemoto) {
        this.tipoAcessoRemoto = tipoAcessoRemoto;
    }

    public String getUsuarioAcessoRemoto() {
        return usuarioAcessoRemoto;
    }

    public void setUsuarioAcessoRemoto(String usuarioAcessoRemoto) {
        this.usuarioAcessoRemoto = usuarioAcessoRemoto;
    }

    public String getSenhaAcessoRemoto() {
        return senhaAcessoRemoto;
    }

    public void setSenhaAcessoRemoto(String senhaAcessoRemoto) {
        this.senhaAcessoRemoto = senhaAcessoRemoto;
    }

    public String getTipoBancoDados() {
        return tipoBancoDados;
    }

    public void setTipoBancoDados(String tipoBancoDados) {
        this.tipoBancoDados = tipoBancoDados;
    }

    public String getNomeBancoDados() {
        return nomeBancoDados;
    }

    public void setNomeBancoDados(String nomeBancoDados) {
        this.nomeBancoDados = nomeBancoDados;
    }

    public ProdutoModel getProdutoModel() {
        if (produtoModel == null) {
            produtoModel = new ProdutoModel();
        }
        return produtoModel;
    }

    public void setProdutoModel(ProdutoModel produtoModel) {
        this.produtoModel = produtoModel;
    }

    /**
     * Ação do script SQL na execução do programa
     */
    private String actionScript;
    /**
     * Modelo de um comboBox para utiliza nas telas
     */
    private DefaultComboBoxModel modelComboBox;
    /**
     * Modelo de uma table para utilizar nas telas
     */
    private DefaultTableModel modelTable;
    /**
     * Lista contendo os dados relacionados da consulta feita na tabela setor.
     * Mas é necessário rever o nome dessa variável, sugestão: lista+Classe
     */
    private List<EstruturaModel> lista;
    /**
     * Variavel responsável por recepcionar dados extraidos das consultas
     * executadas na banco de dados
     */
    private ResultSet resultSet;

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getActionScript() {
        return actionScript;
    }

    public void setActionScript(String actionScript) {
        this.actionScript = actionScript;
    }

    public DefaultComboBoxModel getModelComboBox() {
        if (modelComboBox == null) {
            modelComboBox = new DefaultComboBoxModel();
            modelComboBox.addElement("ESCOLHER");
        }
        return modelComboBox;
    }

    public void setModelComboBox(DefaultComboBoxModel modelComboBox) {
        this.modelComboBox = modelComboBox;
    }

    public DefaultTableModel getModelTable() {
        if (modelTable == null) {
            modelTable = new DefaultTableModel();
            modelTable.addColumn("Codigo");
            modelTable.addColumn("Nome");
            modelTable.addColumn("Sigla");
            modelTable.addColumn("Ativo");

        }
        return modelTable;
    }

    public void setModelTable(DefaultTableModel modelTable) {
        this.modelTable = modelTable;
    }

    public List<EstruturaModel> getLista() {
        if (lista == null) {
            lista = new ArrayList<>();
        }
        return lista;
    }

    public void setLista(List<EstruturaModel> lista) {
        this.lista = lista;
    }

    public ResultSet getResultSet() {
        return resultSet;
    }

    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    public EstruturaModel getEstrutura(int cliente, int produto, String nomeComputador) {
        EstruturaModel model = null;
        for (EstruturaModel estruturaModel : getLista()) {
            if (estruturaModel.getClienteModel().getCodigo() == cliente
                    && estruturaModel.getProdutoModel().getCodigo() == produto
                    && estruturaModel.getNomeComputador().equals(nomeComputador)) {
                return estruturaModel;
            }
        }
        return model;
    }

    public EstruturaModel getEstrutura(int cliente, String siglaProduto) {
        EstruturaModel model = null;
        for (EstruturaModel estruturaModel : getLista()) {
            if (estruturaModel.getClienteModel().getCodigo() == cliente
                    && estruturaModel.getProdutoModel().getSigla().equals(siglaProduto)) {
                return estruturaModel;
            }
        }
        return model;
    }

}
